1 [root@git ~]# cd /mystudy/
2 [root@git mystudy]# git init
3 [root@git mystudy]# git remote add origin https://gitee.com/imxhy/mystudy
1 [root@git mystudy]# git clone https://gitee.com/xiyouMc/pornhubbot
2 [root@git mystudy]# git clone https://gitee.com/xiyouMc/pornhubbot mystudy #clone项目,同时本地创建mystudy目录。
工作目录下的文件只有两种状态:已跟踪和未跟踪。
已跟踪:指文件在上一次快照中有对应的记录,当前状态可能处于未修改,已修改或已放入暂存区。
未跟踪:目录中的除已跟踪的其他文件都属于未跟踪文件,既不存在于上次快照的记录中,也没有放入暂存区。
未跟踪——>已跟踪未修改——>暂存区(修改后暂存)——>git仓库(提交更新)
1 [root@git mystudy]# echo 'My Project' > README
2 [root@git mystudy]# git status
提示:Untracked files:未跟踪文件列表,即之前快照(提交)中没有此文件,git默认不会自动纳入跟踪范围。
1 [root@git mystudy]# git add README
2 [root@git mystudy]# git status
提示:Changes to be committed:已暂存状态的文件。
1 [root@git mystudy]# echo "This is my test file">>README
2 [root@git mystudy]# git status
提示:Changes not staged for commit:跟踪的文件内容发生变化,此次变更未放入暂存区。
git add:此命令可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。即“添加内容到下一次提交中”,而不是“将一个文件添加到项目中”。
1 [root@git mystudy]# git add README #添加至暂存区
提示:若使用git add添加至暂存区之后再次进行修改,文件会处于暂存区和非暂存区。暂存区保存上一次add后的版本,非暂存区标记最后一次修改版本,建议进行提交之前add一次。
1 [root@git mystudy]# git status -s
提示:
??:新添加暂未跟踪文件;
A:新添加到暂存区中的文件;
M:已修改过的文件,若出现在右边,则表示该文件被修改了但是还没放入暂存区,若出现在左边,则表示该文件被修改了并放入了暂存区。
1 [root@git mystudy]# cat .gitignore
*.[oa] #忽略所有以.o或.a结尾的文件;
*~ #忽略所有以波浪符结尾的文件;
*.log #忽略所有以.log结尾的文件。
附1:.gitignore 的格式规范如下:
附2:简化正则表达式:
1 [root@git mystudy]# echo "Hello" > README
2 [root@git mystudy]# echo "Hello" > CONTRIBUTING.md
3 [root@git mystudy]# git add README
4 [root@git mystudy]# git status
解释:修改以上两个问题,但对CONTRIBUTING.md文件未暂存,然后查看状态,是已修改未暂存。
1 [root@git mystudy]# git diff #通过git diff查看具体做了哪些修改。
提示:git diff命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。
注意:git diff本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。
1 [root@git mystudy]# git status
提示:提交之前建议检查是否所有需要提交的文件都已处于暂存区,否则提交的时候不会记录这些还没暂存起来的变化。
1 [root@git mystudy]# git commit
解释:此种方式会启动文本编辑器以便输入本次提交的说明,说明通常位于开头空行位置。
默认git只会将所有暂存区的文件进行提交,但可通过git commit -a选项,git会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。
1 [root@git mystudy]# git mv README README.md
相当于以下三条命令:
1 $ mv README README.md
2 $ git rm README
3 $ git add README.md
1 [root@git mystudy]# git log
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交。
1 [root@git mystudy]# git commit -m 'first commit'
2 [root@git mystudy]# echo "This is my test 3 file" > README3.md
3 [root@git mystudy]# git add README3.md
4 [root@git mystudy]# git commit --amend -m 'second commit'
解释:第一次提交后,发现我们需要再添加一个文件进行提交,可通过以上方式,会使用第二次提交代替第一次提交结果。
1 [root@git mystudy]# echo "This is my test 4 file" > README4.md
2 [root@git mystudy]# echo "This is my test 5 file" > README5.md
3 [root@git mystudy]# git add *
4 [root@git mystudy]# git status
5 [root@git mystudy]# git reset HEAD README5.md #从暂存区取消特定文件
1 [root@git mystudy]# echo "version 1.1" > version.md
2 [root@git mystudy]# git add version.md
3 [root@git mystudy]# git commit -m 'version commit'
4 [root@git mystudy]# echo "version 2.2" > version.md
5 [root@git mystudy]# git status
1 [root@git mystudy]# cat version.md
2 version 2.2
3 [root@git mystudy]# git checkout -- version.md
4 [root@git mystudy]# git status
解释:创建一个文件,提交之后再次修改,然后撤销此次修改,回滚至上一次提交的版本。
为了能在任意 Git 项目上协作,管理自己的远程仓库非要有必要。远程仓库是指托管在因特网或其他网络中的你的项目的版本库。通常有些仓库对你只读,有些则可以读写。与他人协作涉及管理远程仓库以及根据需要推送或拉取数据。管理远程仓库包括了解如何添加远程仓库、移除无效的远程仓库、管理不同的远程分支并定义它们是否被跟踪等等。
1 [root@git mystudy]# git remote -v
1 [root@git mystudy]# mkdir /mystudy2
2 [root@git mystudy]# cd /mystudy2
3 [root@git mystudy2]# git init
4 [root@git mystudy2]# git remote add mystudy2 https://gitee.com/imxhy/mystudy2
5 [root@git mystudy2]# git fetch mystudy2 #使用别名拉取仓库存在但本地没有的文件
解释:git remote add <shortname> <url> 添加一个远程Git仓库,同时指定一个你可以轻松引用的简写。
git fetch [remote-name]:从仓库中拉取所有本地没有的数据。 执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
注意:必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。
1 [root@git mystudy2]# git push mystudy2 mystudy2/master
1 [root@git mystudy2]# git remote show mystudy2
解释:会列出远程仓库的URL与跟踪分支的信息。显示当前正处于master分支,并且如果运行git pull,则会抓取所有的远程引用,然后将远程master分支合并到本地master分支。它也会列出拉取到的所有远程引用。
1 [root@git mystudy2]# git remote rename mystudy2 study2
2 [root@git mystudy2]# git remote
3 study2
提示:修改远程仓库名字后会同时修改分支名,如mystudy2/aaa会变味study2/aaa。
1 [root@git mystudy2]# git remote rm study2
2 [root@git mystudy2]# git remote
1 [root@git mystudy]# git config --global alias.co checkout
2 [root@git mystudy]# git config --global alias.br branch
3 [root@git mystudy]# git config --global alias.ci commit
4 [root@git mystudy]# git config --global alias.st status
解释:如上所示,使用别名后,在执行git commit 时,只需要输入 git ci。