git是分布式版本控制系统,⽤来进⾏版本管理
git init
git init 会在当前⽂件夹下⽣成⼀个.git⽂件夹,也叫做git版本库,⽤来跟踪管理版本
⼯作区(Working Directory)
电脑上能看到的⽬录
版本库(Repository)
⼯作区中有⼀个隐藏⽬录.git,这个不算⼯作区,⽽是Git的版本库 Git版本库⾥存了很多东⻄,其中最重要的就是暂存区(Stage),还有Git⾃动创建的master分⽀,以及 指向master的指针HEAD
git status
git add .
git commit -m "commit message"
git add 将⽂件修改添加到暂存区
git commit 提交更改,将暂存区的所有内容添加到当前分⽀
git remote add origin git@server-name:path/repo-name.git
git remote add origin git@server-name:path/repo-name.git
必须给远程库⼀个名字,origin 远程库的名字,也可以设置为其他
将本地库的内容推送到远程
git push -u origin master
git push --set-upstream origin master
-u 将本地master分⽀和远程的master分⽀关联起来
git remote rm origin
此处的'删除'其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库
git clone git@server-name:path/repo-name.git
Git⽀持多种协议,包括https/ssh,我们⼀般都是使⽤ssh,因为https除了速度慢以外,每次推送都必 须输⼊⼝令
1)撤销⼯作区中⽂件的修改(还未添加到暂存区)
git checkout -- file
2) 撤销暂存区中⽂件的修改(还未提交到远程库)
git reset HEAD file
3)撤销远程库中⽂件的修改(版本回退)
git log
git reset --hard commit_id
git revert HEAD //撤销前⼀次commit
git reset --hard HEAD^ //回退到上⼀个版本
git reset --hard HEAD^ //回退到上⼀个版本。
git log 查看提交历史,以确定回退到哪个版本
git reflog 查看命令历史,以确定回到未来的哪个版本
4)git reset VS git revert
1. git reset 是删除指定的 commit;git revert 是⽤⼀个新的 commit 来回滚之前的 commit
2. git reset 是将 HEAD 指针向后移动了⼀下;git revert 是 HEAD 指针继续向前
1) 查看当前分⽀
git branch
2) 创建分⽀
git branch
3) 创建+切换分⽀
git checkout -b
git switch -c
4) 切换分⽀
git checkout
git switch
5) 合并分⽀
git merge //合并指定分⽀到当前分⽀,并⾃动创建新的commit提交
git merge --no-commit //合并指定分⽀到当前分⽀,但不要进⾏新的提交
6) 查看分⽀合并图
git log --graph
7) 删除分⽀
git branch -d branchA //删除本地分⽀
git push origin --delete branchA //删除远程分⽀
git stash //将当前⼯作区存储起来
git stash list //查看stash list
git stash pop //恢复⼯作区
git cherry-pick //将提交的commit复制到当前分⽀,避免重复劳动
git cherry-pick //将另⼀个分⽀复制到当前分⽀,避免重复劳动
1)git fetch
git fetch //获取远程最新代码到本地,不会进⾏⾃动合并
2)git pull
git pull <远程主机名> <远程分⽀名>:<本地分⽀名>
git pull --rebase //也可以指定使⽤rebase模式进⾏合并
git pull 其实是 git fetch 和 git merge 的简写,获取远程最新代码到本地,并且和本地分⽀进⾏合并 操作。
标签与 commit 的关系,就像 IP 和域名的关系
1)创建标签
git tag
2)以某个 commit 提交创建标签
git tag commitId
3)查看创建的所有标签
git tag
4)查看标签信息
git show
5)将创建的标签推送到远程
git push origin //推送某个指定的 tag 到远程
git push origin --tags //推送所有的 tag 到远程
6)删除⼀个本地标签
git tag -d
7)删除⼀个远程标签
1 git push origin refs:/tags/
11. 修改commit message
提交过代码之后,发现一个地方改错了,你下次提交时不想保留上一次的记录;或者你上一次的commit message的描述有误,这时候你可以使用接下来的这个命令:git commit --amend
在bash里输入$ git commit --amend
直接键入:i,此时进入了输入模式,修改完成后,按下 Esc键退出编辑模式,在键入 :wq 回车退出并保存修改,完成提交