以下主要记录下使用git的基本操作
git 的安装及与远程建立同步关系
- 从git官网下载git,并按提示安装。都选默认即可。
- 安装完成后,查看git是否安装成功:git --version
- git对特定项目设置用户名/邮箱/密码的方法,global视情况而定
git config --global user.name "Affandi" git config --global user.email "123333333@qq.com"
- 然后执行命令查看config文件:cat config
git秘钥生成以及github配置
- 确认本地秘钥,SSH 秘钥默认储存在账户的主目录下的 ~/.ssh 目录。如:C:\Users\asus.ssh\
- 如没有此目录,则需要生成密钥。打开git Bash,命令行输入如下:
// 生成秘钥:直接Enter就行,然后会提示输入密码(可输可不输)
// email必须是你注册github的账号。
ssh-keygen -t rsa -C "your_email@youremail.com"
- 生成密钥后,去到第1步中的目录,找到对应的id_rsa和id_rsa.pub文件,有.pub 后缀的文件就是公钥,另一个文件则是密钥。
- 登录GitHub账号,GitHub---->Settings---->SSH keys. 点击 “new SSH keys”,输入title(随意),输入Key,key中的内容为id_rsa.pub文件的内容.
- 测试检验ssh keys是否成功,命令如下。
ssh -T git@github.com
当看到Hi xxx! You’ve successfully authenticated, but GitHub does not # provide shell access.后就配置成功了。
验证与GitHub的是否可以同步成功及分支拉取与合并
1. 拉取GitHub仓库中的代码:
$ git clone git@github.com:username/test.git
Cloning into 'dispicker'...
Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
2.去到项目位置
$ cd test/
asus@*** MINGW64 /e/test (master)
3. 为了确保是最新代码,可以拉取下。
$ git pull
Warning: Permanently added the RSA host key for IP address '52.74.223.119' to the list of known hosts.
Already up to date.
asus@*** MINGW64 /e/test (master)
4.从master分支拉取出新的分支,别切换到新创建的分支:
$ git checkout -b dev1.0.0
Switched to a new branch 'dev1.0.0'
asus@*** MINGW64 /e/test (dev1.0.0)
5.把新建的分支push到远端
$ git push origin dev1.0.0
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'dev1.0.0' on GitHub by visiting:
remote: https://github.com/kinjoeWhan/dispicker/pull/new/dev1.0.0
remote:
To github.com:kinjoeWhan/dispicker.git
* [new branch] dev1.0.0 -> dev1.0.0
asus@*** MINGW64 /e/test (dev1.0.0)
6.关联远程
$ git branch --set-upstream-to=origin/dev1.0.0
Branch 'dev1.0.0' set up to track remote branch 'dev1.0.0' from 'origin'.
asus@*** MINGW64 /e/test (dev1.0.0)
7.再次拉取验证
$ git pull
Already up to date.
asus@*** MINGW64 /e/test (dev1.0.0)
8.修改文件内容。比如更新README.md文件内容,修改内容后,可以通过git status查看文件修改情况:
$ git status
On branch dev1.0.0
Your branch is up to date with 'origin/dev1.0.0'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
no changes added to commit (use "git add" and/or "git commit -a")
asus@*** MINGW64 /e/test (dev1.0.0)
9.提交
$ git add README.md //提交前需要先add变更的文件,然后再commit
asus@*** MINGW64 /e/test (dev1.0.0)
$ git commit -m "更新readme内容"
[dev1.0.0 ad2c3cc] 鏇存柊readme鍐呭
1 file changed, 1 insertion(+)
asus@*** MINGW64 /e/test (dev1.0.0)
10. 提交到远程
$ git push origin dev1.0.0
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 317 bytes | 317.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:kinjoeWhan/dispicker.git
7788c1a..ad2c3cc dev1.0.0 -> dev1.0.0
asus@*** MINGW64 /e/test (dev1.0.0)
11.把修改分支合并到master分支
(1)先切换到master分支:
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
asus@*** MINGW64 /e/test (master)
(2)然后拉取最新的,预防远程有变更:
$ git pull origin master
From github.com:kinjoeWhan/dispicker
* branch master -> FETCH_HEAD
Already up to date.
asus@*** MINGW64 /e/test (master)
(3)最后合并dev1.0.0到master分支:
$ git merge dev1.0.0
Updating 7788c1a..ad2c3cc
Fast-forward
README.md | 1 +
1 file changed, 1 insertion(+)
asus@*** MINGW64 /e/test (master)
(4)查看变更:
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
(5)提交到远程master
$ git push origin master
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:kinjoeWhan/dispicker.git
7788c1a..ad2c3cc master -> master