文章目录
1.如何保存账号密码,不用每次都需要输入账号密码
git config --global user.name "zutterzhang"
git config --global user.password "ZXRzxr119"
不行的话再
vim .git/config
//在末尾添加
[credential]
helper = store
2.git常用命令
2.1 查看本地的代码状态
git status 查看文件状态
- 可以明确的呈现出本地仓库的状态
- 哪些文件发生改动,哪些文件已经提交到本机
- 以及一些操作指示。
2.2 同步远端分支变化
- 拉取指定分支的变化
git fetch origin master - 拉取所有分支的变化
git fetch - 拉取所有分支的变化,并且将远端不存在的分支同步移除【推荐】
git fetch -p
2.3 同步远端代码变化
- 都是先 git fetch,然后执行合并操作
- 不同的是,git pull 执行的是 git merge,git pull -r 执行的是git rebase
git pull origin master
git pull -r origin master
2.4 新增commit
- 添加文件到缓存区,然后提交到本地仓库
git add files
git commit -m ‘提交备注’
2.5 撤销 commit
- 会将提交记录回滚,代码不回滚
git reset b14bb52 - 会将提交记录和代码全部回滚
git reset --hard b14bb52 - 将部分代码文件回滚
git checkout – files
2.6 合并commit
合并 commit,本质上合并两份不同状态下的代码。
- Git 提供了两种合并 commit 的方式
git merge master
git rebase master
那么 git rebase 和 git merge 到底有什么区别呢?
merge是两个分支处理冲突后,新增一个 commit 追加到master上。
rebase是将someFeature分支上的commit记录追加到主分支上,值得注意的是,这个时候他的commit其实已经发生变化
3.git 操作分支
所谓的分支其实就是一个指向 commitID 的指针,你可以去.git/refs/heads里去看看。
3.1 查看分支
git branch -a
- 可以同时看到本地分支和远端分支,配合上前文介绍的 git fetch -p 可以第一时间查看到最新的分支信息。
3.2 新增本地分支
其实就是创建一个指针指向某一个 commitID。
// git branch qixiu/feature + git checkout zutter/feature
// 从当前分支新增一个新的分支zutter/feature
// 一般情况下,我们应该从master或者其他稳定分支来新增分支
- git checkout -b zutter/feature // 新建分支
- git checkout zutter/feature // 切换分支
3.3 删除本地分支
其实就是移除一个指向 commitID 的指针。
// 删除本地分支,如果本地还有未合并的代码,则不能删除
- git branch -d zutter/feature
// 强制删除本地分支 - git branch -D zutter/feature
3.4 新增远端分支
通常情况下,我们是新建本地分支,然后更新到远端的方式来新增一个远端分支
- git push origin zutter/feature
3.5 删除远端分支
同样,我们也是通过更新到远端的方式来删除一个远端分支
// 等同于git push origin -d zutter/feaure
- git push origin :zutter/feature
4. git 常见的一些操作
git add 某个文件,或者目录下的所有文件 git add .
git commit -m “注释”
git branch net 创建net分支
git checkout net 切换到net分支
git merge net 我们在net分支提交代码之后,切换到master分支,并且执行Git merge net命令,如果没有冲突,那么master分支将会和net分支合并。
发生冲突就解决冲突代码,然后git add和commit提交代码即可。
git tag -a v1.0 -m “这里写相关信息” 为一个版本打标签
git tag -d 标签名 删除tag
git show 标签名
git pull
git push
git status // 查看本地代码状态
git add files // 添加代码到缓存区
git commit -m '提交内容的备注' // 提交代码到本地仓库
git checkout -b branchName // 不加-b就是普通切换分支
git fetch -p // 同步远端分支状态
git pull -r origin branchName // fetch远端代码到本地,并且以rebase的方式合并代码
git push origin branchName // 更新本地代码到远端
5. 开发流程
从 master 切出一个新分支
- git checkout -b zutter/newFeature
5.1 开发一些新功能,然后提交
建议较多频次的提交代码到本地仓库,以便能够更灵活的保存或撤销修改。
此外为了保证提交日志的清晰,建议备注清楚的注释。
git status
git add files // 挑选需要提交的文件,或者全部提交
git commit -m '提交备注'
git push origin zutter/newFeature
5.2 如果代码测试通过,合并到master
// 冗余版 合并到 master
git checkout master
git pull -r origin master
git checkout qixiu/newFeature
git rebase master // 处理冲突
git checkout master
git merge qixiu/newFeature
git push origin master
// 精简版 合并到 master
git checkout qixiu/newFeature
git pull -r origin master // 将master的代码更新下来,并且rebase处理冲突
git push origin master // 将本地代码更新到远端
git rebase,合并代码
前文简单介绍了 git rebase 和 git merge 的区别,坦率讲,他们各有优劣。
git rebase 能让你的 commit 记录非常整洁,无论是线上回滚还是 CodeReview 都更轻松;但却是一个有隐患的操作,使用时务必谨慎。
git merge 操作更安全,同时也更简单;但却会增加一些冗余的 commit 记录。