Appearance
Git 常用操作命令
一、Git 完整复制别人的代码库到新仓库
1、从原地址克隆一份到本地
bash
git clone --bare xxxxx.git2、创建一个新仓库
3、推送到新仓库
bash
cd xxxxx.git
git push --mirror xxxxx.git4、删除本地代码
bash
cd ..
rm -rf xxxxx.git二、常用命令
sh
# 1、检索最新代码
git pull
2、检索单个文件
git checkout 文件
3、提交代码
git add 文件,可以使用*
4、commit代码
git commit -m "备注"
5、提交分支
git push origin HEAD:refs/for/master
git push -u origin master
6、查看分支
git branch
7、恢复代码到没有提交之前的代码
git reset HEAD^
git reset HEAD
8、git查看状态
git status
9、git add的撤销
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.Java 就是对某个文件进行撤销了
第一次没有入库,再次提交代码
git commit --amend -m "message"
回退到之前的某个版本
git reset messageID
git 删除
git rm -f XXX
git 冲突解决:
git stash 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git pull
git stash pop 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
gibash中切换目录使用cd /d/....
把本地其他分支合并到当前分支
git merge branchname
// 分支使用
查看本地、远程所有分支
git branch -a
切换分支
git checkout master
将远程分支信息获取到本地
git fetch
将远程分支映射到本地命名为local-branchname 的一分支。
git checkout -b local-branchname origin/remote_branchname
删除本地分支
git branch -d 分支名
删除远程分支
方法一
git push origin --delete <branchName>
方法二
推送一个空分支到远程分支,其实就相当于删除远程分支
git push origin :<branchName>
文件名大小写不一致配置
git config core.ignorecase false
回退到当前某个版本
git checkout d98a0f565804ba639ba46d6e4295d4f787ff2949 src/main/main.c
提交删除的文件
git add -A .
git 回退某个版本
git reset --hard <commit_id>
删除某些错误分支
先回退到需要的版本,然后使用下面命令
git push origin HEAD --force
git修改远程地址
git remote set-url origin git@gitlab.heroera.com:hibest/hibest_server_common.git
查看git仓库地址:
git remote -v
本地分支合并远程分支解决冲突
git merge origin/分支名称 解决完了 在提交就行了
使用Git进行Clone或者Pull程序的时候会提示,
SSL certificate problem: unable to get local issuer certificate
这个是由于Git默认开启了SSL验证,关闭即可;
解决方式:
git config --global http.sslVerify false
执行以上git命令,关闭ssl验证。三、本地配置多个ssh key问题
1、生成 ssh key
打开git bash,输入以下命令生成key
sh
ssh-keygen -t rsa -C "your_email@youremail.com"
# 直接一步到位输入到文件夹中
ssh-keygen -t rsa -C "3028213607@qq.com " -f ~/.ssh/id_rsa_gittee_zf2、复制到github加入key
3、本地加入私钥
sh
ssh-add ~/.ssh/id_rsa_github4、新建config
touch ~/.ssh/config
sh
# 配置git.github.net
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
PreferredAuthentications publickey
User 362109875@qq.com
# 配置gitLab
Host gitlab.hi-coffice.com
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
User 123456@qq.com5、测试
sh
ssh -T git@gitlab.hi-coffice.com
ssh -vT git@gitlab.hi-coffice.com6、删除全局
sh
git config --global --unset user.name
git config --global --unset user.email7、每个仓库下面单独配置
sh
git config user.name "liang"
git config user.email "123456@qq.com"
git config user.name "mm-bt"
git config user.email "362109875@qq.com"四、Git修改分支名称
sh
1、修改本地分支
git branch -m oldbranch newbranch
2、 本地推送到远程
git push origin newbranch
3、删除远程老的分支
git push --delete origin oldbranch
或者在线删除五、git关联项目
Git global setup
sh
git config --global user.name "liang"
git config --global user.email "123456@qq.com"Create a new repository
sh
git clone git@gitlab.heroera.com:druid/test20190516.git
cd test20190516
touch README.md
git add README.md
git commit -m "add README"
git push -u origin masterExisting folder
sh
cd existing_folder
git init
git remote add origin git@gitlab.heroera.com:druid/test20190516.git
git add .
git commit -m "Initial commit"
git push -u origin masterExisting Git repository
sh
cd existing_repo
git remote add origin git@gitlab.heroera.com:druid/test20190516.git
git push -u origin --all
git push -u origin --tags六、git代码统计
1天代码统计
sh
git log --since=1.day.ago --author="123456@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -
git log --since=5.day.ago --author="123456@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -之前的代码统计
sh
git log --author="373183800@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -
固定期间
git log --since ==2017-10-31 --until=2017-11-01 --author="1149449034@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -