操作
Git global setup
git config --global user.name "lihang36"
git config --global user.email "lihang9@jd.com"
SSH
一般git操作
从服务端拉取代码(Create a new repository)
git clone http://git.jd.com/lihang36/ShareModule.git
从服务器拉取所有分支代码
git clone xxx
cd xxx
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
push到新的git地址
git push --mirror https://github.com/ooftf/Jdm.git
从服务端拉取指定文件夹
git init TIM_Android
cd TIM_Android
git remote add origin https://github.com/tencentyun/TIMSDK.git
git config core.sparsecheckout true
echo "Android/*" >> .git/info/sparse-checkout
git pull origin master
提交代码
git add README.md
git commit -m "add README"
git push -u origin master
已存在文件和git建立连接(Existing folder)
第一步
cd existing_folder
git init
git remote add origin git@git.jd.com:lihang36/demo.git
第二步
git add .
git commit -m "Initial commit"
git push -u origin master
已存在的git库(Existing Git repository)
cd existing_repo
git remote add origin git@git.jd.com:lihang36/demo.git
git push -u origin --all
git push -u origin --tags
通过命令行修改远程地址
git remote set-url origin https://gitee.com/jouypub/json.git
通过命令Https 修改为SSH
git remote set-url origin git@github.com:ooftf/algorithm.git
从一个git仓库迁移到另外一个git仓库
https://blog.csdn.net/nathan1987_/article/details/78529357
1). 从原地址克隆一份裸版本库,比如原本托管于 GitHub。
git clone –bare git://github.com/username/project.git
–bare 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。
2). 然后到新的 Git 服务器上创建一个新项目,比如 GitCafe。
3). 以镜像推送的方式上传代码到 GitCafe 服务器上。
cd project.git git push –mirror git@gitcafe.com/username/newproject.git –mirror 克隆出来的裸版本对上游版本库进行了注册,这样可以在裸版本库中使用git fetch命令和上游版本库进行持续同步。
4). 删除本地代码
cd .. rm -rf project.git 5). 到新服务器 GitCafe 上找到 Clone 地址,直接 Clone 到本地就可以了。
git clone git@gitcafe.com/username/newproject.git 这种方式可以保留原版本库中的所有内容
submodule 相关
添加 submodule
git submodule add http://git.jd.com/JmClient/JmShareModule.git
将所有 submodule切换到master分支
git submodule foreach "git cheackout master"
从remote拉取某个submodule
1. 第一种方式
cd submodule_name
git submodule init 初始化子模块
git submodule update 更新子模块
2. 第二种方式
在父module中
git submodule update --init --recursive
删除submodule(暂定)
git rm submodule_name
git commit -m "remove submodule"
git push origin master
问题
Fetch和pull的区别 ?
Fetch从远端检出一个新的本地分支 pull将远程分支和本地分支合并
error
already exists in the index
git rm -r --cached directory
git commit -m "removing directory"
REMOTE HOST IDENTIFICATION HAS CHANGED
删除 .ssh 文件下的 known_hosts 文件
遴选(cherry-pick)
有时,你不想将整个 Git 分支合并到另一个分支,而是想选择并移动几个特定的提交。这个过程被称为 “ 遴选(cherry-pick)”。