git 命令基本使用
1、git整体流程图
2、公司代码管理仓库/自己的GitHub上的仓库(远程仓库已经存在的情况下)
1、git clone 检出远程仓库的地址
例如:git clone git@github.com:labuladong/fucking-algorithm.git
2、git pull 拉取远程代码到本地 (每次开发之前/每次merge提交之前 建议都git pull 一下远程仓库)
git pull [remoteName] [localBranchName]
可以直接git pull 默认拉取远程地址的master分支
3、git branch 分支操作
查看本地分支:git branch
查看远程分支:git branch -r
每次在开发时,建议自己在本地建一个分支dev,不要直接在master分支上操作。
创建新分支并立即切换到新分支: git checkout -b [name]
例如:git checkout -b dev
在切换到自己开发分支后,你可以愉快的开发了
----------- 开发开始 ---------
开发中
---------- 开发结束 ----------
4、查看状态 git status
你想查看修改了那些文件,可以使用这个命令
5、添加文件到index
git add 文件名 或者目录
例如:git add feature_1.txt
你可以像上面一个个添加文件到追踪索引,也可以把全部的修改文件添加到追踪索引
git add .
不建议偷懒这样做,除非你很确定。
6、提交 git commit
git commit -m "消息"
例如:git commit -m "add context in file "
[tips]
第5、6这两步可以合在一起
git commit -am "消息"
但是不建议这样做,a表示所有的文件,容易把你不需要的文件也添加到追踪了
7、查看当前分支的提交记录 git log
例如:git log -n (n表示记录个数,默认应该是20个,可以修改默认参数的,但是个人觉得没有必要)
有提交日志表示之前的添加和提交都成功了。
8、回到主分支 && 拉取最新远程代码
git checkout master
git pull (养成好习惯)
9、merge你开发的分支代码到主分支
git merge dev
10、推代码到远程服务端
git push
简单的git代码使用就差不多了。
11、还有以下回滚、git stash等操作。
git add 的后撤
所有文件
git reset HEAD .
单个文件
git reset HEAD - filename (- 可以去掉 直接文件名就可以了)
git commit 回滚
如果你只是提交的信息感觉需要修改或者错误了,你可以使用下面的命令修改即可
git commit --amend
会进入到vim 模式
如果是直接向撤销commit。可以使用下面的参数
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
git reset --soft HEAD^
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
如果是想退到某个提交上。可以直接使用
git reset --hard commitID
HEAD^ 第一个CommitID
HEAD^^ 第二个CommitID
以此类推
stash:
git stash list
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
(1)git stash save "save message" : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
(2)git stash list :查看stash了哪些存储
(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p
(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}
(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
(8)git stash clear :
删除所有缓存的stash
pop和apply都是应用,且可以选择应用哪一个,唯一的区别是前者应用且删除,后者只应用不删除
git status可以参考:https://www.jianshu.com/p/cddbcbdcc600
[tips] 没有在git 版本控制中的文件,是不能被git stash 存起来的
Git 常用命令
git branch 查看本地所有分支
git status 查看当前状态
git commit 提交
git branch -a 查看所有的分支
git branch -r 查看本地所有分支
git commit -am "init" 提交并且加注释
git remote add origin git@xxx.xxx.xxx
git push origin master 将文件给推到服务器上
git remote show origin 显示远程库origin里的资源
git push origin master:develop
git push origin master:hb-dev 将本地库与服务器上的库进行关联
git checkout --track origin/dev 切换到远程dev分支
git branch -D master develop 删除本地库develop
git checkout -b dev 建立一个新的本地分支dev
git merge origin/dev 将分支dev与当前分支进行合并
git checkout dev 切换到本地dev分支
git remote show 查看远程库
git add .
git rm 文件名(包括路径) 从git中删除指定文件
git clone xxxxxxx.git 从服务器上将代码给拉下来
git config --list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前repos的所有的改变
git add [file name] 添加一个文件到git index
git commit -v 当你用-v参数的时候可以看commit的差异
git commit -m "This is the message describing the commit" 添加commit信息
git commit -a -a是代表add,把所有的change加到git index里然后再commit
git commit -a -v 一般提交命令
git log 看你commit的日志
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git commit -m "remove" 移除文件(从Git中删除)
git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新
git stash push 将文件给push到一个临时空间中
git stash pop 将文件从临时空间pop下来
---------------------------------------------------------
git remote add origin xxxxxx.git
git push origin master 将本地项目给提交到服务器中
-----------------------------------------------------------
git pull 本地与服务器端同步
-----------------------------------------------------------------
git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
git push origin serverfix:awesomebranch
------------------------------------------------------------------
git fetch 相当于是从远程获取最新版本到本地,不会自动merge
git commit -a -m "log_message" (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 :
git branch branch_0.1 master 从主分支master创建branch_0.1分支
git branch -m branch_0.1 branch_1.0 将branch_0.1重命名为branch_1.0
git checkout branch_1.0/master 切换到branch_1.0/master分支
du -hs
-----------------------------------------------------------
mkdir WebApp
cd WebApp
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin xxxx.git
git push -u origin master
分支共有5种类型
1) master,最终发布版本,整个项目中有且只有一个
2) develop,项目的开发分支,原则上项目中有且只有一个
3) feature,功能分支,用于开发一个新的功能
4) release,预发布版本,介于develop和master之间的一个版本,主要用于测试
5) hotfix,修复补丁,用于修复master上的bug,直接作用于master
切换远程仓库地址
查看远程仓库地址
git remote -v
例如:
注:本文中的url全部需根据自身情况修改
1、直接修改远程仓库地址
git remote set-url origin url
2、删除本地远程仓库地址,然后添加新的仓库地址
git remote rm origin
git remote add origin url
3、修改配置文件
每个仓库在初始化时,都会有一个 .git 的隐藏目录,修改其中的 config 文件中的 url
git在线练习
如果对git不熟悉的话,请在线练习git命令,传送门--------->git分支练习
git 提交规范
规范参考链接为:
Git 协同与提交规范
Git commit message规范