# Introduction

## Các bước cần thiết để khởi tạo một folder dùng cho dev

1. login vào trang <https://github.com/>&#x20;

tài khoản <lamhung81.i3s@gmail.com>/ mật khẩu Lh..2

2.vào trang <https://github.com/PX4/Firmware>

chọn nhấn vào biểu tượng Fork ở phiá trên bên phải màn hình

Khi này PX4/Firmware sẽ được fork về tài khoản <https://github.com/lamhung81i3s>

* Trên máy tính Linux Ubuntu

tạo folder, ví dụ PX4\_i3s

* **mở terminal mới, cd .../PX4\_i3s, clone từ account dùng lệnh**

git clone <https://github.com/lamhung81i3s/Firmware.git>

* **cd .../PX4\_i3s/Firmware, kiểm tra status của folder bằng lệnh git status**

cho kết quả,

On branch master

Your branch is up-to-date with 'origin/master'.

* **List các tag (version) git tag**

cho kết quả,

NuttX-6.16

ardrone\_flight

fixedwing\_stable

stable\_manual\_flight

...

v1.6.4

v1.6.5

* **Chuyển sang 1 tag ổn định, ví dụ phiên bản v1.6.5**

git checkout tags/v1.6.5

cho kết quả,

Note: checking out 'tags/v1.6.5'.

You are in 'detached HEAD' state. You can look around, make experimental

changes and commit them, and you can discard any commits you make in this

state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may

do so (now or later) by using -b with the checkout command again. Example:

git checkout -b new\_branch\_name

HEAD is now at f160743... Join us on Slack README badge

* **Kiểm tra lại status bằng lệnh git status**

cho kết quả,

HEAD detached at v1.6.5

nothing to commit, working directory clean

* **Tạo một branch mới từ tag này git checkout -b AUV\_i3s**

cho kết quả,

Switched to a new branch 'AUV\_i3s'

* **Kiểm tra status git status**

cho kết quả,

On branch AUV\_i3s

nothing to commit, working directory clean

* **Hiển thị các commit**

git log

* **Quay về trạng thái ngay sau 1 commit nào đó**

git checkout \<commit>

* **Hiển thị các branch**

git branch

* **Vẽ đồ thị các nhánh và các commit**

  git log --all --decorate --oneline --graph
* git add
* git commit -m "Nội dung cần commit"
* **Clone một branch đã được tạo từ một account cá nhân của github**

Ví dụ trong tài khoản lamhung81 của github, có Folder Firmware clone từ PX4/Firmware

Đầu tiên cần

git clone <https://github.com/lamhung81/Firmware.git>

sau đó cần hiển thị tất cả các branches

git branch -a

tiếp theo chuyển về AUV\_adaptation

git checkout AUV\_adaptation

* [ ] Một số câu lệnh khác

You can get back to the master branch by using:

```
git checkout master
```

**Pull để lấy các update về (nếu có người khác cùng phát triển) trước khi  push các modification của mình lên**

git pull origin AUV\_adaption

sau đó cần nhập ví dụ account: lamhung81 và mật khẩu

Rồi mới được push

git push origin AUV\_adaptation

### Tạo 1 folder file và lưu version

Ví dụ cần tạo 1 thư mục có tên là ICSTCC\_2017 và có chức năng lưu version

1. Trên github account, tạo 1 repositoire, có tên ICSTCC\_2017
2. Trên máy tính, trên terminal, vào trong thư mục mà dự định sẽ chứa ICSTCC\_2017,

git clone <https://github.com/lamhung81i3s/ICSTCC_2017.git>

1. Thay đổi, thêm bớt nội dung bên trong thư mục ICSTCC\_2017 vừa được tạo rồi

git add .... các file/ thư mục mới tạo

git commit -m "........"

1. Để push, vì là ở nhánh master, do đó cần

git push -u origin master

#### Chú ý khi dùng git checkout

Trong trường hợp đã quay về trạng thái 1 commit nào đó đã thực hiện trong quá khứ (b...), sau đó muốn quay lại commit gần nhất (a.....) , kô được quay lại bằng cách git checkout \<tên commit gần nhất >.

Nếu mà lỡ làm như vậy, mà lại tạo ra các thay đổi code trong (a...), sau đó muốn commit -m và push thì bắt buộc phải tạo ra 1 nhánh mới bằng git checkout -b \<tên nhánh mới>, sau đó có thể push được lên account .

Cách tốt nhất để từ commit (b....) về gần nhất là git checkout \<tên nhánh đang dùng>, sau đó thì mới được thêm hay sửa code mà khi push vẫn giữ nhánh cũ

### Tao code tren local, sau do push len remote

Tao moi 1 folder, sau do: git init

Them cac file vao trong folder, sau do kiem tra : git status

Them vao git: git add fileHayFolderCanCommit

Tao commit: git commit -m " Noi dung commit"

Create a new repository on GitHub, ten la mynewrepository, ben trong tai khoan github

git remote add origin <https://github.com/lamhung81/mynewrepository.git>

git push -u origin master

Co khi can phai chay lenh nay truoc lenh tren: git pull origin master

Tham khao

<https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners>

## Tao code tren local tren Windows với ứng dụng Github Desktop, sau do push len remote

Nội dung này có ích cho việc ví dụ muốn lưu một thư mục chứa các files trong quá trình viết 1 bài báo Latex

Trên chương trình Github Desktop, Chọn File/ New repository

Khi đó sẽ xuất hiện cửa sổ "Create a new repository", trên đó cần làm

Trong ô trống Name,đặt tên của Folder mà ta muốn tạo ra để lưu giữ file, ví dụ là NAMEXXX

Trong ô trống Description, viết tóm tắt nội dung của repository (folder) cần làm gì, phục vụ mục đích gì

Trong ô trống Local path, chọn folder mà ta muốn lưu trữ folder với tên đã đặt là NAMEXXX ở trên

Có thể chọn hay không tick vào Initilize this repository with a README

Sau đó ân vào Creat repository

Sau đó trên Windows explorer, truy cập vào thư mục NAMEXXX, thay đổi nội dung, ví dụ thay đổi hay thêm file hay dùng Tex editor

Quay trở lại màn hình của Github Desktop, trên tab current repository, những thay đổi trong folder NAMEXXX sẽ được hiển thị.

Cần commit bằng cách điền nội dung vào trong ô Summary (required) là bắt buộc và viết Description, sau đó ấn Commit to master

Sau đó có thể ấn vào tab Push (or Fetch origin)

#### Discard changes đã tạo ra trên 1 file nào đó nhưng chưa add hay commit

Gỉả sử có file aut\_att\_control\_main.cpp. Vì lý do nào đó cần quay trở lại trạng thái của commit cũ (commit aaa) trong lích sử. Sau khi thực hiện 1 số thay đổi (ví dụ để test cái gì đó) muốn quay trở lại đúng trạng thái của commit aaa đó. Để làm như vậy,dùng lệnh

```
git checkout src/modules/auv_att_control/auv_att_control_main.cpp
```

#### [Delete a Local GIT branch](https://koukia.ca/delete-a-local-and-a-remote-git-branch-61df0b10d323) <a href="#id-2841" id="id-2841"></a>

To delete the\_local\_GIT branch we can try one of the following commands:

```
git branch -d branch_name


git branch -D branch_name
```

as you can see above, we have 2 different argument, one with ‘d’ and one with ‘D’.

The`-d`option stands for`--delete`, which would delete the local branch, only if you have already pushed and merged it with your remote branches.

The`-D`option stands for`--delete --force`, which deletes the branch regardless of its push and merge status, so be careful using this one!

#### Delete a remote GIT branch <a href="#id-971a" id="id-971a"></a>

To delete a remote branch you can use the following command:

```
git push 
<
remote_name
>
 --delete 
<
branch_name
>
```

Alternatively, there is this other following option too, which might be just a bit hard to remember:

```
$ git push 
<
remote_name
>
 :
<
branch_name
>
```

These top options can also be used if you want to delete a “tag”.
