版权声明:本文为博主原创文章,未经博主允许不得转载: https://blog.csdn.net/chentravelling/article/details/https://mp.csdn.net/postedit/82665115
-
用户名和邮箱地址的作用
用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。
每次commit都会用用户名和邮箱纪录。
github的contributions统计就是按邮箱来统计的。
-
查看用户名/邮箱
-
git config user.name
-
git config user.email
2.创建用户名和邮箱,也可以用来修改
- git config --global user.name "username"
- git config --global user.email "xxx@xxx"
常用git命令操作
- git add 添加,经常用-_-||
- git pull 拉代码,也能用于刷新本地仓库
- git branch 查看本地分支
- git branch -a 查看本地分支,查看远程分支(不过更详细)
- git branch -avv 查看本地分支,查看远程分支(超详细)
- git diff xxxxx(修改的文件名) 查看修改的内容
- git commit -m "xxxx" 将所有添加到索引库的文件提交到本地仓库
- git reset HEAD <文件>..." 以取消暂存 取消存入的commit (有添加就有取消)
- git reset xxxxxxxxxx(代表历史提交记录) 效果和取消暂存一样,让当前的状态指向某个历史提交点上
- git push xxxxx(远程仓库地址) 用于提交代码,将本地仓库的修改推送到远程仓库
- git checkout -b xxxxx 切换到xxxxx分支 注意:如果xxxxx不存在,会创建一个这样的分支
- git checkout xxxx 切换分支 有点蛋疼-_-
- git branch -d xxxxx 删除本地分支,或将修改的文件恢复
- git push origin --delete xxxxx 删除远程分支 , 慎用!!!
- git branch -r -d xxxxx 删除远程分支
- git rebase 发生冲突时可用rebase 和并分支,貌似说的不对, —— 这个是合并分支用的 千万不要和 reset搞混了
- git merge 将一个或多个分支合并
- repo forall -c git pull 拉取代码,去每个目录下拉取,针对有些目录文件拉不到用这个
- git commit --amend 追加提交,注意,注意,注意(重要的的是说三遍):追加提交之前,一定要去先看一下是否有别人提交过,可用git log 查看提交日志,后面再push 上去就好了!
- git stash 保存当前状态
- git reset --hard HEAD^^^^^ 领先几个提交就回退几个 reset 前面有讲
- git pull 再接着拉取代码
- git status 看看目前提交点的位置
- git stash pop 拿回保存的东西
- git branch --set-upstream-to=(远程分支) (本地分支)
- git remote -v 查看当前项目在那个服务器上拉的 显示对应的克隆地址
- git clean --df 删除暂存中未追踪的文件 使用过后 可以和 git checkout . 一起使用 ,最后 在git pull 一下就可以拉到最新代码
- git branch --set-upstream-to=origin/<branch> release 本地分支关联远程分支
-
git branch --set-upstream-to=origin/remote_branch your_branch
其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。
-
git restore 丢弃所有改动
解决冲突
git pull --reabse
git add
git rebase --continue
git push
如果提交文件,多提交了不该提交的东西如何修改:
git log 先看一下,你的提交是否在最前面
git reset --soft HEAD^ 回退到我前面的提交,已经进入commit了的可用此命令还原
git status 查看一下
git reset HEAD <文件> 去掉多余的提交
接下来就简单了, 重新提交就醒了 good 但一定要记住, 不能追加提交 -_-
git clean -f
删除当前目录下所有没有track过的文件. 他不会删除.gitignore文件里面指定的文件夹和文件, 不管这些文件有没有被track过
git clean -df
删除当前目录下没有被track过的文件和文件夹
git clean -xf
删除当前目录下所有没有track过的文件. 不管他是否是.gitignore文件里面指定的文件夹和文件
git reset --hard和git clean -f是一对好基友. 结合使用他们能让你的工作目录完全回退到最近一次commit的时候
将整个工程切换到某个分支下
repo start --all xxxx
repo forall -c git gc 压缩历史信息
================================================
git pull 提示错误,Your local changes to the following files would be overwritten by merge:
解决办法
1、服务器代码合并本地代码
$ git stash //暂存当前正在进行的工作。
$ git pull origin master //拉取服务器的代码
$ git stash pop //合并暂存的代码
2、服务器代码覆盖本地代码
$git reset --hard //回滚到上一个版本
$git pull origin master
==============================
repo forall -c git checkout -f
repo forall -c git clean -fd
repo forall -c git reset --hard 分支名
repo forall -c git pull 对比服务器上的分支, 有新的内容就拉下来
repo sync
===============================
======================
拉取代码报错
Syncing work tree: 80% (12/15) git-lfs smudge --skip -- 'av/av.apk': git-lfs: command not found
error: external filter 'git-lfs smudge --skip -- %f' failed 127
error: external filter 'git-lfs smudge --skip -- %f' failed
git-lfs smudge --skip -- 'diag/diag.apk': git-lfs: command not found
error: external filter 'git-lfs smudge --skip -- %f' failed 127
error: external filter 'git-lfs smudge --skip -- %f' failed
git-lfs smudge --skip -- 'home/home.apk': git-lfs: command not found
error: external filter 'git-lfs smudge --skip -- %f' failed 127
error: external filter 'git-lfs smudge --skip -- %f' failed
git-lfs smudge --skip -- 'onlinevideo/onlinevideo.apk': git-lfs: command not found
error: external filter 'git-lfs smudge --skip -- %f' failed 127
error: external filter 'git-lfs smudge --skip -- %f' failed
git-lfs smudge --skip -- 'phone/phone.apk': git-lfs: command not found
error: external filter 'git-lfs smudge --skip -- %f' failed 127
error: external filter 'git-lfs smudge --skip -- %f' failed
git-lfs smudge --skip -- 'setting/setting.apk': git-lfs: command not found
error: external filter 'git-lfs smudge --skip -- %f' failed 127
error: external filter 'git-lfs smudge --skip -- %f' failed
git-lfs smudge --skip -- 'systemview/systemview.apk': git-lfs: command not found
error: external filter 'git-lfs smudge --skip -- %f' failed 127
error: external filter 'git-lfs smudge --skip -- %f' failed
Syncing work tree: 100% (15/15), done.
Ubantu下设置
git lfs install
mac 下设置
brew install git-lfs
repo forall -c git clean -fd
repo forall -c git checkout -f
git pull
======================================
=========================================================
代码拉取报错:
git clone ssh://xxx.xxx.xx.xx:xxx8/tools/repo
Cloning into 'repo'...
sketch@xxx.xx.xx.xx: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
1.有可能是因为 你的gerrit 上面所配置的名字叫做 xxxx 但是你的 电脑名字叫做 sketch @173.xx.xx.xx 导致找不到你的名字 所以 需要重新配置
2.在.ssh文件下新建一个config文件 里面填上你的名字user xxxxxx 这样就可以了
-----------
git 提交代码报错:
这个可能是本地的User.name 和 User.email 和远程服务器上不一致所导致的
commit 3f7b9a2: email address xxxx@xxx.xxx.xxx is not registered in your account, and you lack 'forge committer' permission.
git commit --amend --no-edit --author="xxxxx<xxxxxx@xxxx.com>"
-----------
查找
git status|grep -E "04_01|04_02|00_11"|sed "s/修改://g"|sed "s/删除://g"|xargs git add
通过这个命令可以筛选你需要提交的内容
sed 's/要被取代的字串/新的字串/g'
git命令还有很多,上面就列举出我们常用的,学习
最后上个大神的git合并分支的操作链接 很详细 https://blog.csdn.net/zzh920625/article/details/78315127