学习Git笔记
在学习Git中的一些笔记
常用的几个UNIX命令:
pwd
: 显示当前目录的名称cd
: 改变当前操作的目录,例如:cd /Users/Documents/gittext,将会改变目录至新的目录ls
: 列出当前目录下的内容ls -l
: 列出当前目录下的内容(信息更加详细)mkdir
: 新建一个目录,例如:mkdir gittest
会新建一个gittest文件夹touch
: 新建一个文件,例如:touch test1.txt
会新建一个test1.txt的文件open
: 打开一个文件,例如:open test1.txt
会将test1.txt的文件打开- 按下
tab
键,会将后面的名称补全
/
根路径
./
当前路径
.//
上一级路径
如果进入vim模式,如何退出?
- 按下
esc
键 - 输入
:wq
(保存退出) 输入:q!
(不保存退出)
git init
把当前目录变成Git可以管理的仓库git add
告诉Git,把文件添加到仓库,可反复多次使用,添加多个文件,例如:git add test1.txt
。每次修改,如果不add到暂存区,那就不会加入到commit中git commit -m
“第一次测试”,提交。""里面是本次提交的说明- 在
test1.txt
文件中添加如下:
1 买奇瑞瑞虎3还是艾瑞泽5,这是一个问题?
2 要不买个五菱宏光吧
git status
:时刻掌握仓库当前的状态,命令看看结果git diff
:查看文件的difference:
diff --git a/test1.txt b/test1.txt
index e69de29..059733f 100644
--- a/test1.txt
+++ b/test1.txt
@@ -0,0 +1,2 @@
+1 买奇瑞瑞虎3还是艾瑞泽5,这是一个问题?
+2 要不买个五菱宏光吧
\ No newline at end of file
注意,git diff不过是显示还没有暂存起来的改动,而不是这次工作和上次提交之间的差异。所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
git log
查看提交历史,以便确定要回退到哪个版本git reset --hard xxxxxxxx
返回到某一个版本号,版本号没必要写全,前几位就可以了,Git会自动去找。cat test1.txt
查看文件内容git reflog
查看每一次的命令历史git checkout -- test1.txt
把test1.txt文件在工作区的修改全部撤销,这里有两种情况:一种是test1.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;另一种是test1.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区。git rese
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。例如:git reset HEAD test1.txt
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考回退,不过前提是没有推送到远程库。
git rm readme.txt
删除readme.txtgit commit -m "删除readme.txt"
删除后提交- 如果只执行了
git rm readme.txt
,并没有commit,想把删除的readme.txt再恢复出来,需要两步:git reset HEAD
,然后执行git checkout -- readme.txt
git push
把本地库的内容推送到远程,实际上是把当前分支master推送到远程。git push origin master
git clone 远程仓库URL地址
把远程仓库的东西克隆到本地git checkout -b dev
创建dev分支,然后切换到dev分支,相当于两个命令:git branch dev
和git checkout dev
(切换到dev分支)git branch
查看当前分支
* dev
master
git merge dev
将dev分支的工作成果合并到master分支上git branch -d dev
删除dev分支git branch -D dev
强行删除一个没有被合并过的分支- git用
<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,我们修改如下后保存 git stash
把当前工作现场“储藏”起来git stash list
查看存储的东西- 恢复存储的内容:一是用
git stash apply
恢复,但是恢复后,stash内容并不删除,你需要用git stash drop
来删除;另一种方式是用git stash pop
,恢复的同时把stash内容也删了 - 远程仓库的默认名称是
origin
git remote
查看远程库的信息git remote -v
显示更详细的信息git remote add origin http://.....
将本地仓库与网络仓库连接起来git push origin master
把master分支上的所有本地提交推送到远程库origin
多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
git tag <name>
打一个新标签,例如git tag v1.0
git tag
查看所有标签