本文最后更新于:8 个月前
工作区于版本库的同步操作:add、commit、checkout
版本库与remote点同步操作:push、fetch、clone
remote与工作区的同步操作:pull
git status查看修改状态
Git笔记(二)代码同步
一、工作区 & 版本库
1.1、add
add命令用于将「工作区」的文件修改添加到「暂存区」
1 2 3
| git add [file1] [file2] [file...] git add dir git add .
|
1.2、commit
commit命令用于将代码修改提交到「版本库」。
1.2.1 暂存区 to 版本库
1 2
| git commit -m "message" git commit file1 [file2] [file...] -m "message"
|
1.2.2 工作区 to 版本库
1
| git commit -a -m "message"
|
上面这条命令没有得到验证!!
1.2.3 重做commit
1 2 3 4 5
| git commit --amend -m "message"
git commit --amend [file1] [file2] [file...]
|
1.3、checkout
checkout命令用于 恢复工作区文件 或 切换分支,这里介绍的重心是前者。
1.3.1 恢复工作区
1 2 3 4 5
| git checkout . git checkout -- filename
git checkout commitID -- filename
|
1.3.2 切换分支/快照/标签
1 2 3 4 5 6 7
| git checkout git checkout develop
git checkout commitID
git checkout tags/1.0 git checkout 1.0
|
二、版本库 & remote
2.1、push推送
push命令用于将本地分支点更新,推送同步到远程主机上的仓库
1
| git push <远程主机名> <本地分支名>:<远程分支名>
|
示例:
2.1.1 指定默认主机
如果当前分支与多个主机存在追踪关系,则可以使用-u
选项指定一个默认主机,这样后面就可以不加任何参数使用git push
1 2
| git push -u origin master
|
2.1.2 删除远程分支
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
1 2 3
| git push origin :master
git push origin --delete master
|
2.1.3 强制推送
1 2
| git push --all origin git push --force origin
|
2.2、fetch下载
git fetch
命令用于将某个远程主机的更新,全部取回本地,但是不影响本地代码,通常用于查看其他人的进程
2.2.1 应用一:用远程分支创建本地分支
1 2
| git fetch origin dev git checkout -b dev origin/dev
|
2.2.2 应用二:合并远程分支到本地分支
1 2
| git fetch origin/dev git merge origin/dev
|
2.3、clone克隆
- clone默认只克隆master分支,即本地项目一开始只有一个master分支
- 如果要获取其它远程分支,操作方法是:基于指定的远程分支来新建本地分支
三、remote & 工作区
3.1、pull
git pull
命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并,作用相当于git fecch target
加git merge target
1 2
| git pull <远程主机名> <远程分支名>:<本地分支名>
|
示例:
1 2 3 4 5
| git pull origin next
git fetch origin git merge origin/next
|
如果合并分支时,需要采用「rebase」模式,可以加上--rabase
参数
1
| git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
|
如果远程主机删除了某个分支,默认情况下,git pull
不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull
不知不觉删除了本地分支。
但是,你可以改变这个行为,加上参数 -p
就会在本地删除远程已经删除的分支
四、查看代码状态
代码被修改后,使用git status
命令可以查看到所有被修改的文件,以及修改当前处在「工作区」还是「暂存区」
1 2 3 4 5 6 7 8 9 10 11
| git status
git diff
git diff --cached [file]
git diff HEAD
|